
#ifndef __E_GUI_ICON_FACTORY_ENUMS_INCLUDED__
#define __E_GUI_ICON_FACTORY_ENUMS_INCLUDED__

#include "irrTypes.h"

namespace irr {
namespace gui {

	enum EGUI_ICON_FACTORY_ELEMENT_TYPE
	{
		//! A Generic Icon, used by all the elements in the factory.
		EGIEFT_ICON = MAKE_IRR_ID('i','c','o','n'),

		//! An Icon slot which Icons can be dragged between.
		//! For example for an RPG game
		EGIEFT_ICON_SLOT = MAKE_IRR_ID('s','l','o','t'),

		//! A Window containing lots of icon slots
		EGIEFT_ICON_SLOT_WINDOW = MAKE_IRR_ID('s','w','i','n'),

		//! The number of elements in this factory
		EGIEFT_COUNT = 3
	};

	const c8* const GUIIconFactoryElementTypeNames[] =
	{
		"Icon",
		"IconSlot",
		"IconSlotWindow",
		0
	};

	enum EGUI_ICON_EVENT_TYPE
	{
		//! The icon was selected
		EGET_ICON_SELECTED		 =	MAKE_IRR_ID('i','c','o','1'),

		//! The icon was deselected
		EGET_ICON_DESELECTED	 =	MAKE_IRR_ID('i','c','o','2'),

		//! The icon was double clicked or opened
		EGET_ICON_DOUBLE_CLICK	 =	MAKE_IRR_ID('i','c','o','3'),

		//! The icon was right clicked
		EGET_ICON_RIGHT_CLICK	 =	MAKE_IRR_ID('i','c','o','4'),

		//! The icon was picked up and is about to be dragged
		EGET_ICON_START_DRAG	 =	MAKE_IRR_ID('i','c','o','5'),

		//! The mouse is moved while the icon is being dragged
		EGET_ICON_DRAGGING		 =	MAKE_IRR_ID('i','c','o','6'),

		//! The icon (Caller) is being dragged over another element (Element)
		//! The event is first given to the icon's parent, and if it's not absorbed
		//! then it is also given to the element that is being dragged over
		EGET_ICON_DRAG_OVER		 =	MAKE_IRR_ID('i','c','o','7'),

		//! The icon (Caller) is no longer being dragged over another element (Element)
		//! The event is first given to the icon's parent, and if it's not absorbed
		//! then it is also given to the element that is being dragged off
		EGET_ICON_DRAG_OFF		 =	MAKE_IRR_ID('i','c','o','8'),

		//! The icon (Caller) was dropped onto another element (Element)
		//! The event is first given to the icon's parent, and if it's not absorbed
		//! then it is also given to the element that it has been dropped on to
		EGET_ICON_DROPPED		 =	MAKE_IRR_ID('i','c','o','9'),

		//! Started editing the text
		EGET_ICON_START_EDITING  =	MAKE_IRR_ID('i','c','o','a'),

		//! Finished editing the text
		EGET_ICON_FINISH_EDITING =	MAKE_IRR_ID('i','c','o','b'),

		//! Cancelled editing the text
		EGET_ICON_CANCEL_EDITING =	MAKE_IRR_ID('i','c','o','c')
	};

	enum EGUI_ICON_LAYOUT
	{
		//! a standard icon with text underneath
		EGUIIL_STANDARD=0,

		//! a thumbnail sized icon, large with text underneath
		EGUIIL_THUMBNAIL,

		//! a list or tree style icon, small with text on the right
		EGUIIL_LIST,

		//! an icon that fits into a slot, 
		//! it resizes to fit its parent, the icon text is only visible as a tooltip
		EGUIL_SLOT,

		//! the number of available styles
		EGUIL_COUNT
	};

	const c8* const GUIIconLayoutNames[] =
	{
		"standard",
		"thumb",
		"list",
		"slot",
		0
	};

} // namespace gui
} // namespace irr

#endif // __E_GUI_ICON_FACTORY_ENUMS_INCLUDED__
